package run.siyuan.model;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @ClassName Goods
 * @Author Wnjie
 * @Date 2019/12/7 0007
 **/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("member")
public class Member implements Serializable {

    private static final long serialVersionUID = -3983673015890287657L;

    @TableId(type = IdType.INPUT)
    @JsonSerialize(using = IdSerializer.class)
    private Long id;

    // @ApiModelProperty(value = "迁移Id",hidden = true)
    private Long migrationId;
    // @ApiModelProperty(value = "迁移数据处理状态（0-未处理 1-已处理）",hidden = true)
    private Integer migrationStatus;

    // @ApiModelProperty(value = "fullName")
    private String fullName;
    // @ApiModelProperty(value = "生日")
    private String birthday;
    // @ApiModelProperty(value = "性别")
    private String gender;
    // @ApiModelProperty(value = "messageLink")
    private String messageLink;
    // @ApiModelProperty(value = "lineId")
    private String lineId;
    // @ApiModelProperty(value = "电子邮箱")
    private String email;
    // @ApiModelProperty(value = "电话")
//    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String mobile;
    // @ApiModelProperty(value = "头像")
    private String avatar;
    // @ApiModelProperty(value = "邀请码")
    private String inviteCode;

    // @ApiModelProperty(value = "关系链path")
    private String path;
    // @ApiModelProperty(value = "推荐人")
    private Long recommendId;

    // @ApiModelProperty(value = "用户来源")
    private String source;
    // @ApiModelProperty(value = "用户打标 2-老用户 3-新用户")
    private Integer userFlag;
    // @ApiModelProperty(value = "会员类型")
    private String memberType;
    // @ApiModelProperty(value = "会员等级")
    private Integer memberLevel;
    // @ApiModelProperty(value = "状态")
    private Integer status;
    // @ApiModelProperty(value = "绑定邀请码的时间")
    private Long memberTime;
    // @ApiModelProperty(value = "升级店主的时间")
    private Long shopTimeL1;
    // @ApiModelProperty(value = "升级L2的时间")
    private Long shopTimeL2;
    // @ApiModelProperty(value = "升级L3的时间")
    private Long shopTimeL3;

    // @ApiModelProperty(value = "隐私授权状态（0未明确、1同意、2拒绝）")
    private Integer authPrivacy;

    /**
     * 最近一次登录时间
     */
    // @ApiModelProperty("请求来源")
    private String origin;

    /**
     * 最近一次登录时间
     */
    // @ApiModelProperty("最后一次在线时间")
    private Long lastOnlineTime;

    /** 创建时间 */
    // @ApiModelProperty(hidden = true)
    @TableField(fill = FieldFill.INSERT)
    private Long createTime;
    /** 修改时间 */
    @JsonIgnore
    // @ApiModelProperty(hidden = true)
    @TableField(fill = FieldFill.UPDATE)
    private Long updateTime;

    /**
     * 鉴权专用
     */
    @TableField(exist = false)
    private String openid;
    @TableField(exist = false)
    private String password;
    @TableField(exist = false)
    private String passwordEncryptType;

    // @ApiModelProperty("是否有效：1-有效；0-无效")
    private Boolean isValid;

    // @ApiModelProperty("有效时间")
    private Long effectTime;

    // @ApiModelProperty("发版活动截止时间")
    private Long publishingActivityEndTime;

    // @ApiModelProperty("邀请人邀请码")
    @TableField(exist = false)
    private String recommendInviteCode;

    // @ApiModelProperty("邀请码图片")
    private String inviteCodePicture;

    // @ApiModelProperty("标志offline")
    private Integer offline;
}
